package com.kitten.user.service;

import com.kitten.framework.common.response.Response;
import com.kitten.user.dto.req.*;
import com.kitten.user.dto.resp.FindUserByIdRspDTO;
import com.kitten.user.dto.resp.FindUserByPhoneRspDTO;
import com.kitten.user.model.vo.FindUserProfileReqVO;
import com.kitten.user.model.vo.FindUserProfileRspVO;
import com.kitten.user.model.vo.UpdateUserInfoReqVO;

import java.util.List;

public interface UserService {

    /**
     * 用户注册
     * @return
     */
    Response<Long> register(RegisterUserReqDTO reqDTO);

    /**
     * 更新用户信息
     * @param reqVO
     * @return
     */
    Response<?> updateUserInfo(UpdateUserInfoReqVO reqVO);

    /**
     * 根据手机号查询用户信息
     *
     * @param findUserByPhoneReqDTO
     * @return
     */
    Response<FindUserByPhoneRspDTO> findByPhone(FindUserByPhoneReqDTO findUserByPhoneReqDTO);

    /**
     * 更新用户密码
     * @return
     */
    Response<?> updateUserPassword(UpdateUserPasswordReqDTO updateUserPasswordReqDTO);


    /**
     * 根据用户 ID 查询用户信息
     *
     * @param findUserByIdReqDTO
     * @return
     */
    Response<FindUserByIdRspDTO> findById(FindUserByIdReqDTO findUserByIdReqDTO);

    /**
     * 批量根据用户 ID 查询用户信息
     *
     * @param findUsersByIdsReqDTO
     * @return
     */
    Response<List<FindUserByIdRspDTO>> findByIds(FindUsersByIdsReqDTO findUsersByIdsReqDTO);

    /**
     * 查询个人主页信息
     * @param findUserProfileReqVO
     * @return
     */
    Response<FindUserProfileRspVO> findUserProfile(FindUserProfileReqVO findUserProfileReqVO);

}
